剑指 offer 字符串算法题:字符串的空格替换 |
您所在的位置:网站首页 › 剑指offer python pdf 下载 › 剑指 offer 字符串算法题:字符串的空格替换 |
题目描述:实现一个replaceSpace函数,替换给定字符串中的空格为“%20”。例如,当字符串为’We Are Happy’.则经过替换之后的字符串为’We%20Are%20Happy’。 分析:对于一个字符串,空格可能出现在开头,末尾,或者不含空格的子串之间,最直观的方法是遍历字符串,遇到空格即替换,由于字符串在JavaScript中属于不可变,需使用新字符串进行连接操作。 正则表达式方法:str.replace(pattern, replaceStr) 数组map方法:1. 原字符串变成数组 2. map数组替换空格 3. 替换后数组变成字符串 双指针算法:1. 遍历原字符串计算出替换后的字符串长度,并生成该长度数组newStrArr 2. 两个指针:i指向原字符串, j指向新字符串 3. str[i] 非空格即将str[i++]放入newStrArr[j++]; str[i]是空格,将’%20’三个字符依次放入newStrArr[j++] 4. 数组变成字符串newStrArr.join('')。从过程看,方法和数组map类似。 求解: // 正则表达式 function replaceSpace1(s: string): string { return s.replace(/ /g /* new RegExp(' ', 'g') */, '%20'); } // 暴力法 function replaceSpace2(s: string): string { let res = ''; let len = s.length; for (let i = 0; i < len; i++) { res += s[i] === ' ' ? '%20' : s[i]; } return res; } // split + map + join function replaceSpace3(s: string): string { return s .split('') .map((item) => { return item === ' ' ? '%20' : item; }) .join(''); } |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |